在 Julia 中,文本通过两种不同的架构实体进行处理: 32 位字符(Char) 原生类型和不可变的, UTF-8 编码的字符串(String)。与某些语言中字符即为单字符字符串不同,Julia 将 Char 视为一个表示 Unicode 码点的一等数值类型。
1. 类型层次结构与内存
具体而言, Char 是一个 $32$ 位的原生类型(子类型为 AbstractChar)。内置的 String (子类型为 AbstractString)支持完整的 Unicode 范围。虽然一个 Char 是固定大小的, String 而字符串是可变宽度的;单个字符占用 1 到 4 字节,ASCII 的转换点位于 $0x80(128)$ 处。
2. 算术与比较
由于 Char 代表一个数值码点,因此可以进行算术运算。使用 Int('a') 可得到 97,而使用 Char(97) 可得到 'a'。支持词典顺序比较: 'X' < 'x' 为真,因为在 Unicode 中大写字母排在小写字母之前。
| 特性 | 字符('a') | 字符串("a") |
|---|---|---|
| 类型 | Char | String |
| 大小 | 固定 $32$ 位 | 可变宽度 UTF-8 |
| 可变性 | 不适用(值类型) | 否(不可变) |
链式比较如 'A' <= 'X' <= 'Y' 的判断结果为 true 或 false 基于 Unicode 序列。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>